package com.mi.rule.wx_pay;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 王永吉
 * <p>
 * 2019-12-14
 */
@MapperScan({"com.mi.rule.db.mapper"})
@SpringBootApplication(scanBasePackages = {"com.mi.rule"})
public class Start {

    public static void main(String[] args) {
        SpringApplication.run(Start.class, args);
    }

    //        撒也不是.....
    //        Demo demo1 = new Demo();
    //        demo1.setId("1");
    //        Demo demo2 = new Demo();
    //        demo2.setId("2");
    //
    //        ArrayList<Demo> arrayList = new ArrayList<>();
    //        arrayList.add(demo1);
    //        arrayList.add(demo2);
    //
    //
    //        for (Demo e: arrayList ) {
    //            Class<? extends Demo> aClass = e.getClass();
    //            Field id = aClass.getDeclaredField("id");
    //            TableId annotation = aClass.getAnnotation(TableId.class);
    //
    //            System.out.println("11111");
    //
    //        }
    //
    //        MiWrapper<Demo> wrapper = new MiWrapper<>(Demo.class);
    //        Demo demo = new Demo();
    //        demo.setId(1 + "");
    //        Class<?> cls = demo.getClass();
    //        TableInfo tableInfo = TableInfoHelper.getTableInfo(cls);
    //        String keyProperty = tableInfo.getKeyProperty();
    //        Object idVal = ReflectionKit.getMethodValue(cls, demo, tableInfo.getKeyProperty());
    //
    //        System.out.println("11111111111");
    //        Map<String, Object> 根据实体类注解自动解析 = 根据实体类注解自动解析();
    //        System.out.println(JSON.toJSONString(根据实体类注解自动解析));
    //
    //        Map<String, Object> stringObjectMap = 根据实体类注解自动解析2();
    //        System.out.println(JSON.toJSONString(stringObjectMap));
    //        ArrayList<Demo> arrayList = new ArrayList<>();
    //        for (int i = 0; i < 100000; i++) {
    //            Demo demo = new Demo();
    //            demo.setName("name");
    //            demo.setIsDelete("");
    //            demo.setId("1" + i);
    //            demo.setIsUse("  sadasd ");
    //            demo.setLogo("www.baidu.com");
    //            arrayList.add(demo);
    //        }
    //        System.out.println(JSON.toJSONString(arrayList.get(0)));
    //        System.out.println(JSON.parseObject(JSON.toJSONString(arrayList.get(0))).keySet());
    //        System.out.println(JSON.parseObject(JSON.toJSONString(arrayList.get(0))).values());
    //        传入数组和循环长度自动执行批量插入(Arrays.asList(1, 2, 3, 4, 5), 7);

    //    private static void 传入数组和循环长度自动执行批量插入(List<Object> list, int loopLength) {
    //        int count = list.size() / loopLength;
    //        int yu = list.size() % loopLength;
    //        for (int i = 0; i < count; i++) {
    //            List<Object> objects = list.subList(i * loopLength, (i + 1) * loopLength);
    //            //            批量插入
    //            System.out.println(objects);
    //        }
    //        if (yu > 0) {
    //            List<Object> objects = list.subList(count * loopLength, (count * loopLength) + yu);
    //            //            批量插入
    //            System.out.println(objects);
    //        }
    //    }


    //    private static Map<String, Object> 根据实体类注解自动解析() throws Exception {
    //        //
    //        Demo demo = new Demo();
    //        demo.setName("name");
    //        demo.setIsDelete("");
    //        demo.setId("1");
    //        demo.setIsUse("  sadasd ");
    //
    //        //解析
    //        Class<?> demoClass = Demo.class;
    //        TableName annotation = AnnotationUtils.findAnnotation(demoClass, TableName.class);
    //        if (annotation == null) throw new Exception("缺少表名注解");
    //        System.out.println(annotation.value());
    //
    //
    //        Map<String, Object> tableContent = new HashMap<>();
    //        Field[] declaredFields = demoClass.getDeclaredFields();
    //        for (Field declaredField : declaredFields) {
    //            TableId tableId = declaredField.getAnnotation(TableId.class);
    //            TableField tableField = declaredField.getAnnotation(TableField.class);
    //            String tableColumn = "";
    //
    //            //列
    //            if (tableField == null && tableId == null) continue;
    //            if (tableField != null && !tableField.exist()) continue;
    //            if (tableId != null) tableColumn = tableId.value();
    //            if (tableField != null) tableColumn = tableField.value();
    //
    //            //值
    //            declaredField.setAccessible(true);
    //            Object tableValue = declaredField.get(demo);
    //            if (tableValue == null) continue;
    //            if (tableValue.toString().trim().equals("")) continue;
    //
    //
    ////<表字段，属性值>
    //            tableContent.put(tableColumn, tableValue);
    ////
    ////            Object value = declaredField.get(demo);
    ////            String name = declaredField.getName();
    ////            Class<?> type = declaredField.getType();
    ////            boolean accessible = declaredField.isAccessible();
    ////            System.out.println(name);
    ////            System.out.println(type);
    ////            System.out.println(accessible);
    ////            System.out.println(tableId);
    ////            System.out.println(tableField);
    //        }
    //        return tableContent;
    //    }


    //    private static Map<String, Object> 根据实体类注解自动解析2() throws Exception {
    //        //
    //        Demo demo = new Demo();
    //        demo.setName("name");
    //        demo.setIsDelete("");
    //        demo.setId("1");
    //        demo.setIsUse("  sadasd ");
    //
    //        //解析
    //        Class<?> demoClass = Demo.class;
    //        TableName annotation = AnnotationUtils.findAnnotation(demoClass, TableName.class);
    //        if (annotation == null) throw new Exception("缺少表名注解");
    //        System.out.println(annotation.value());
    //
    //
    //        Map<String, Object> tableContent = new HashMap<>();
    //        Field[] declaredFields = demoClass.getDeclaredFields();
    //        for (Field declaredField : declaredFields) {
    //            TableId tableId = declaredField.getAnnotation(TableId.class);
    //            TableField tableField = declaredField.getAnnotation(TableField.class);
    //            String tableColumn = "";
    //
    //            //列
    //            if (tableField == null && tableId == null) continue;
    //            if (tableField != null && !tableField.exist()) continue;
    //            if (tableId != null) tableColumn = tableId.value();
    //            if (tableField != null) tableColumn = tableField.value();
    //            //值
    //            declaredField.setAccessible(true);
    //            Object tableValue = declaredField.get(demo);
    //            if (tableValue == null) continue;
    //            if (tableValue.toString().trim().equals("")) continue;
    //
    //            //<属性名，表字段>
    //            tableContent.put(declaredField.getName(), tableColumn);
    //        }
    //        return tableContent;
    //    }


}
